#!/usr/bin/perl
$\="\n";
use strict;
use warnings;

# 役判定テスト
#
#
#

use lib qw( ./lib );
#use Test::More tests => 2;
use Test::More  'no_plan';

use_ok("Mjan");
use Mjan qw/ hantei /;




my %test_data = (
	
	test1 => {
		search_target => "m2m3m3m4m4m5m5m5m5m6m6m6m6m7",
		head_hai => 0, # m5
		tsumo    => 'm2',
		# ポン、チー、カンは？
		foo_ro   => 0, # 副露（フーロ）
		dora     => 0, # ドラ数
		ippatsu  => 0, # 一発（いっぱつ）
		reach    => 1, # 立直（リーチ）or 黙聴（ダマテン）
		own_home => 'E',# 自風
		now_home => 'E',# 場風
		double_reach => 0, # ダブルリーチ
		agari_hai    => 'm2', # 上がり牌（決め手の牌）
		
		# 上がり役定義
		YAKU => ['TANYAO'],
	},

	test2 => {
		search_target => "m1m2m3s1s2s3p1p2p3p9p9z1z1z1",
		head_hai => 0, # p9
		agari_hai    => 'm1', # 上がり牌（決め手の牌）
		
		# 上がり役定義
		YAKU => [],
	},

	test3 => {
		# ダディクールのタンヤオ -> 四暗刻が判定できるか？
		search_target => "m2m3m4m2m3m4m2m3m4p2p2p2m5m5",
		head_hai => 0, # p9
		agari_hai    => 'm2',
		
		# 上がり役定義
		YAKU => ['TANYAO'],
	},
	
	test4 => {
		# 平和、タンヤオ、四暗刻、
		search_target => "m2m3m4m2m3m4m2m3m4p2p3p4m5m5",
		head_hai => 0, # p9
		agari_hai    => 'm2',
		
		# 上がり役定義
		YAKU => ['TANYAO', 'PINHU'],
	},
	test5 => {
		# 平和とみせかけてカンチャン待ちのため役なし
		search_target => "m1m2m2m3m3m4m4m5m6m7m8m9m5m5",
		head_hai => 0, # p9
		agari_hai    => 'm2',
		
		# 上がり役定義
		YAKU => [],
	},
);

main_loop(\%test_data);
exit(0);

#my $rc = hantei();
#is($rc, 1);


#local $\ = "\n";

# （参考）
# 麻雀の役一覧 - Wikipedia
# http://ja.wikipedia.org/wiki/麻雀の役一覧

# アルファベット順でm<p<s <z になるようにする。
# m,p,s の順は良いが zは必ず最後になるようにしておく。
# ソートに m,s,p < z 必須

# m  : 萬子
# s  : 索子
# p  : 筒子

# z1 : 東
# z2 : 南
# z3 : 西
# z4 : 北
# z5 : 白
# z6 : 發
# z7 : 中



sub main_loop
{
	my ($para) = @_;
	my %test_data = %$para;
	
	foreach my $test_type (sort keys %test_data) {
		
		my %param = (
			target    => $test_data{$test_type}->{search_target},
			agari_hai => $test_data{$test_type}->{agari_hai},
		);
		
		print "-- label $test_type";
		print "-- search $test_data{$test_type}->{search_target} $test_data{$test_type}->{agari_hai}";
		
		my ($rc, %result) = hantei(\%param);
		if ($rc) {
			if (exists $test_data{$test_type}->{YAKU}) {
				my $src_list = $test_data{$test_type}->{YAKU};
				my $tgt_list = $result{YAKU};
				
				print "src @$src_list";
				print "tgt @$tgt_list";
				
				# 役複合比較 == 配列の中身比較
				ok( eq_array($src_list, $tgt_list), "役比較");
				
			}
		}
	}
}
